package com.ruoyi.web.controller.common.cos;

import com.qcloud.cos.COSClient;
import com.qcloud.cos.ClientConfig;
import com.qcloud.cos.auth.BasicCOSCredentials;
import com.qcloud.cos.auth.COSCredentials;
import com.qcloud.cos.region.Region;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class CosConfig {
    // 使用 @Value 从 application.yml 中读取配置
    @Value("${tencent.cos.secret-id}")
    String secretId;

    @Value("${tencent.cos.secret-key}")
    String secretKey;

    @Value("${tencent.cos.region}")
    String regionStr;

    @Bean(destroyMethod = "shutdown") // 确保应用关闭时能正确释放资源
    public COSClient cosClient() {

        if (secretId == null || secretKey == null) {
            throw new IllegalStateException("请设置环境变量 secretId 和 secretKey");
        }

        // 1. 初始化用户身份信息
        COSCredentials cred = new BasicCOSCredentials(secretId, secretKey);

        // 2. 配置客户端
        ClientConfig clientConfig = new ClientConfig();

        // 3. 设置存储桶所在的地域，比如 "ap-guangzhou"
        // 注意：请将 "COS_REGION" 替换为你实际使用的地域，比如 "ap-guangzhou"
        // 或者你可以使用 @Value 从配置文件中读取，下面会提到
         // 例如 "ap-guangzhou"
        if (regionStr == null) {
            throw new IllegalStateException("请设置环境变量 COS_REGION，例如 ap-guangzhou");
        }
        Region region = new Region(regionStr);
        clientConfig.setRegion(region);

        // 4. 生成 COS 客户端
        return new COSClient(cred, clientConfig);
    }
}